This invention relates to a variable length coded data transmission device for pseudo-fixing various bit lengths of data blocks, which are obtained by variable length coding, to a constant length level and transmitting the data blocks in that condition.
The variable length coding is a coding method, in which codes having different bit lengths are assigned respectively to various data in accordance with frequency of appearance of each data item, in order to reduce the quantity of code. Therefore, although the end locations of the codes, which codes were subjected to variable length coding processing, are different from each other, it will still be possible that the individual codes are correctly decoded and the ends of the individual codes are correctly recognized only if the bit string is correctly read because the decoding is made at the time point when the bits are read on equivalent to the length of the specific code.
If code errors should occur during the transmission of the variable length coded data, the coded data would be decoded incorrectly as if they had a different code length. As a consequence, an out-of-synchronization occurs and therefore, decoding is carried out in a wrong manner for a long period of time even after the recovery of code errors. This, in fact, significantly deteriorates the quality of decoded signals. As one method for prevent possible adverse effects from such out-of-synchronization attributable to code errors, there is known a method as discussed in a printed material written by David Redmil under the heading of "Robust Architectures for Image and Video Coding" 2nd International Workshop on Mobile Multimedia Communications (MoMuC), April 1995, in which bit lengths of variable length coded data blocks are averaged for each group of data blocks so that the bit length of each data block in any selected group will become equal. The bit length of each block thus averaged is fixed so that each block has a pseudo fixed bit length, and then each data block is transmitted in that condition. In this printed material, the variable length coded data are properly divided into several blocks taking advantage of the nature or characteristic of the variable length codes during the transmission of data such that each divided data item has a predetermined length. Such divided coded-data are used to detect the ends of the codes during the decoding process by judging whether or not the codes can be decoded and then returned to their original variable length codes.
This method will now be described with reference to FIG. 9.
Now, presume that there are a number, N, of variable length coded data blocks and that a bit length of each variable length coded data block i satisfies b.sub.i (0.ltoreq.i.ltoreq.N-1). It should also be noted that any numerical value including i is hereinafter supposed as a mod N.
First, prior to transmission of the number, N, of variable length coded data blocks, an average s.gtoreq.(1/N) sum b.sub.i (where the sum is an operator indicating a sum of i=0 to N-1) is obtained.
Then, a number, N, of slots each having a bit length s is imagined. Various stages of operation to be described hereinafter are made with respect to those slots. On the first stage, as indicated by S1, each bit constituting the variable length coded data block i (0.ltoreq.i.ltoreq.N-1) is filled in each bit location constituting each slot i (0.ltoreq.i.ltoreq.N-1). At that time, with respect to the block i which satisfies bi&lt;s, the slot i has excessive bits (namely, the slot i has extra space to receive additional bits). On the other hand, with respect to the block i which satisfies bi&gt;s, all of the bits cannot be filled into the slot i. If some blocks have too many bits to fill therein, the process proceeds to the second stage. On second stage, with respect to those bits, which could not be filled in the block i, a judgment is made as to whether or not they can be filled in the following slot (namely, adjacent slot) as indicated by S2. If the bit length of the block i+1 to be assigned to the following slot i+1 satisfies b.sub.i+1 &lt;s, the slot i+1 has an empty area behind the bits of the block i+1 and therefore, the excessive bits, which could not be filled in the slot i and overflowed, are filled in this empty area. In case there still remains a block having bits, which could not be filled in the empty area of the slot i+1, the process proceeds to the third stage where the remaining excessive bits are filled in the following slot i+2 of the slot i+1 as indicated by S3. If such a filling operation is repeated by N-times at the most, the bits of the number, N, of the blocks can all be filled in the slots. The resultantly obtained data can be handled as the number, N, of pseudo-fixed length codes (hereinafter referred to as the "fixed length data block") having bit lengths as indicated by S4.
In this way, each variable length coded data block is caused to have a pseudo fixed length, then each coded data block having such a pseudo fixed length is transmitted in that condition and decoded on the receiver side. Here, the fixed length data blocks arriving, one after another, at the receiver side include the variable length coded data blocks. In order to detect the end of a variable length coded data block, it is necessary to finish the decoding of the block. However, as is apparent from the hereinbefore description, a top portion of the variable length coded data block necessarily occupies a top portion of the fixed length data block received. Accordingly, on the receiver side, decoding of the received code is started always at the start timing of the fixed length data block.
When decoding is over with respect to a number, one, of the variable length coded data block, decoding is started with respect to the following variable length coded data block. However, with respect to the variable length coded data block which is astride a plurality of slots and transmitted in that condition, decoding is not finished even after the decoding was made with respect to the bits of the last s-th slot. In the light of this fact, therefore, with respect to such a variable length coded data block which is received in a fashion astride a plurality of slots, a required number of slots (namely, those slots over which the data block is astride) are prepared to receive all bits of the variable length coded data block so that decoding can be performed. That is, for decoding, the procedures at each stage are performed in the following manner. First, suppose the number, N, of slots having a bit length s are present and presume that the received fixed length coded data blocks are filled respectively in these slots. On the first stage, decoding is performed from the top bit location of each slot. At that time, if there is present a slot, whose decoding is not yet finished, in a location somewhere before the s-th bit, the process proceeds to the second stage. On the second stage, the slot i whose decoding is not yet finished is checked as to whether or not decoding was finished in the following slot i+1 and a judgment is made as to whether or not a block i+1 satisfying b.sub.i+1 &lt;s is obtained. If the judgment result is affirmative, the bits of the remaining area in the slot i+1 are added to the slot i and decoding is further performed with respect to the slot i. If the decoding is not yet finished in spite of the addition of the bits in the slot i+1, the process proceeds to the third stage where the bits in the following slot i+2 of the slot i+1 are added. If this bit-adding operation is repeatedly performed by the same number of times as at the time of transmission of data, the original number, N, of variable length code blocks can be obtained.
As discussed hereinbefore, the variable length coded data blocks are formed as pseudo-fixed length codes having s*N bits, and transmitted together with the value of s. With respect to each block to be transmitted at the start timing of the slot, even if transmission errors occurred to the preceding block, no out-of-synchronization, which would otherwise occur due to transmission errors, will occur and decoding is performed at the normal timing. That is, even if errors occur in the midway, a correct synchronization can be obtained for each block at the time for decoding. Thus, an occurrence of decoding errors on a large scale can be prevented.
On the other hand, aside from the method for obtaining a correct synchronization in the manner as just mentioned, an idea of an application of error correction code may come across the mind as one of the methods for effectively preventing deterioration of the quality of decoded signals due to signal errors during the time for transmission of data. As a method for applying an error correction code, aside from the method for applying a constant error correction code to all data, a bit selective error correction is effective in which error correcting ability of the error correction code is partly varied. This method is particularly effective to data which have different sensitivity for code error (error sensitivity) depending on part of the data. This bit selective error correction is known in the name of BS-FEC (Bit Selective Forward Error Correction) or UEP (Unequal Error Protection) (hereinafter simply referred to as "BS-FEC"). The details are described, for example, in a printed material written by H. Suda and T. Miki, "An Error Protected 16 kbit/s Voice Transmission for Land Mobile Radio Channel" IEEE J-SAC, vol. 6, No. 2, pp. 346-352, 1988.
Now, presume that there is found a variable length coded data block j having a remarkably longer bit length than the rest of the variable length coded data blocks when there is employed the method for causing the variable length coded data blocks to have a pseudo-fixed length and transmitting the data blocks in that condition, as previously mentioned. The various bits constituting such a variable length coded data block j are distributed to many other slots than the slot j. Since those bits are filled in the rear empty area of each slot instead of being filled in the leading end area of each slot, they are subjected to adverse effects of the out-of-synchronization caused by code errors occurred in each fixed length data block during the time for transmission of data. As apparent from the discussion made hereinbefore, the above conventional transmission method has such a vital disadvantage in that in case there are some variable length coded data blocks having a remarkably longer bit length than the rest of the blocks, adverse effects to the variable length coded data blocks due to the code errors are even increased.
Also, presume a case where an error correction code is applied when data are to be transmitted in the state that the data has a pseudo-fixed length. In this case, it is not desirable to apply a constant correction code to all data because error sensibility is sometimes different depending on part of the data. In such a case, some data become unduly redundant, thus degrading the transmission efficiency. In case the BS-FEC is applied, it becomes necessary for such data whose code length and code configuration are varied due to variable length coding applied thereto to simultaneously transmit application patterns of the error correction codes as additional data which application patterns correspond to the data and error sensibility of the data. Moreover, if error sensibility is different depending on minor data items, it will be necessary to change the error correction codes more frequently.
As discussed above, the conventional technology is encountered with a problem in that when error correction codes are applied, effective operation is difficult to make in case the error sensibility is different depending on part of the data.